package characteristics.encapsulation;

import bean.Student;
import org.junit.Test;

/**
 * 高内聚低耦合
 * 内聚：指一个模块内各个元素彼此结合的紧密程度；
 * 耦合：指一个软件结构内不同模块之间互连程度的度量。
 * 内聚意味着重用和独立；
 * 耦合意味着多米诺效应牵一发动全身。
 * 高内聚低耦合：
 * 高内聚：类的内部数据操作细节自己完成，不允许外部干涉；
 * 低耦合：仅暴露少量的方法给外部使用，尽量方便外部调用。
 * <p>
 * <p>
 * 类的成员：属性、方法、构造器、初始化块、内部类、静态成员
 * <p>
 * 权限修饰符：
 * 类：只能使用public/缺省修饰
 * 类的内部成员：可以使用4种权限修饰符进行修饰。
 * <p>
 * 封装性的体现：
 * 1.私有化private类的属性，提供公共的get、set方法，对此属性进行获取或修改
 * 2.将类中不需要对外暴露的方法，设置为private。
 * 3.单例模式中构造器private了，避免在类的外部创建实例。
 * <p>
 * JavaBean，是指符合如下标准的Java类：
 * 类是公共的；
 * 有一个无参的公共的构造器；
 * 有属性，且有对应的get/set方法。
 * <p>
 * UML类图(Unified Modeling Language, 统一建模语言)，用来描述软件模型和架构的图形化语言。
 * <p>
 * this
 * this可以调用的结构：成员变量、方法、构造器
 * this的理解：当前对象（在非static修饰的 方法中调用时）或 当前正在创建的对象（在构造器中调用时）
 * this调用构造器
 * > 格式："this(形参列表)"
 * > 可以在类的构造器中，调用当前类中指定的其他构造器
 * > 要求："this(形参列表)"必须声明在当前构造器的首行
 * > "this(形参列表)"在构造器中，最多声明一个。
 */
public class EncapsulationTest {
    /**
     * 导入其他模块中的类
     */
    @Test
    public void testOtherModule() {
        bean.Student student = new bean.Student(1, 5, 99);
        Student student1 = new Student(1, 2, 3);
        dimensional.one.Student student2 = new dimensional.one.Student(12, 34);

    }
}
